package com.kotlin.flong.base1

/**
 * @Author:liangjl
 * @Date: 2020/6/16-21:14
 * @Eamil:jilongliang@sina.com
 * @Description:
 */
class Student(private val username: String, private var age: Int, private var address: String) {
    fun printInfo() {
        //模板获取值
        println("username=${username},age=${this.age},adddress=${this.address}")
    }
}

/**
 * 如果构造方法拥有注解或者可见性修饰
 * 那么constructor关键字就是不能省略的，并且它位于修饰符后面
 */
class Student1 private constructor(username: String) {

}

/**
 *用户名不传值就是默认值给一个值
 * 在JVM上，如果类的primary构造方法的所有参数都拥有默认值，那么kotlin编译器就会这个类生成一个不带参数的构造方法
 * 这个不带参数的构造方法就会使用这些参数的默认值，这样做的目的在于跟Spring等框架更好地集成
 */

class Student2 constructor(var username: String = "周伯通") {

}

fun main(args: Array<String>) {
    var stu1 = Student("小梁", 20, "广东省广州市")
    stu1.printInfo()

}
